package cn.fansunion.leecode.array.max;

/**
 * 896. 单调数列 <br/>
 * 如果数组是单调递增或单调递减的，那么它是 单调 的。 <br/>
 * 
 * 如果对于所有 i <= j，nums[i] <= nums[j]，那么数组 nums 是单调递增的。 <br/>
 * 如果对于所有 i <= j，nums[i] >= nums[j]，那么数组 nums 是单调递减的。 <br/>
 * 
 * 当给定的数组 nums 是单调数组时返回 true，否则返回 false。 <br/>
 * 
 * 来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/monotonic-array 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * 
 * @author wen.lei@brgroup.com
 *
 *         2022-3-9
 */
public class MonotonicArray {
    /*    示例 1：
    
    输入：nums = [1,2,2,3]
    输出：true
    示例 2：
    
    输入：nums = [6,5,4,4]
    输出：true
    示例 3：
    
    输入：nums = [1,3,2]
    输出：false*/

    public boolean isMonotonic(int[] nums) {
        return isAsc(nums) || isDesc(nums);
    }

    // 是否降序
    private boolean isDesc(int[] nums) {
        int prev = Integer.MAX_VALUE;
        // 降序时，当前的 不应该比 前面的大
        for (int cur : nums) {
            if (cur > prev) {
                return false;
            }
            prev = cur;
        }
        return true;
    }

    // 是否升序
    private boolean isAsc(int[] nums) {
        int prev = Integer.MIN_VALUE;
        // 升序时，当前的 不应该比 前面的小
        for (int cur : nums) {
            if (cur < prev) {
                return false;
            }
            prev = cur;
        }
        return true;
    }
}
